#include "thread_pool.hpp"
#include "task.hpp"

#include <ctime>
#include <string>
#include <cstdlib>

int main()
{
  std::cout << "当前正在执行我的进程的其他代码" << std::endl;
  sleep(3);

  srand((long long)time(nullptr));

    while(true)
    {
        sleep(1);
        int x = rand() % 100 + 1;
        int y = rand() % 100 + 1;
        const std::string operat = "+-*/%";
        char op = operat[rand() % operat.size()];
        
        qds::task t(x, y, op);
        //单例本身是会在任何场景,任何环境下被使用
        //所以get_instance,可能会被多个线程同时调用,存在线程安全的问题
        //使用需要加锁,以保证安全
        qds::thread_pool<qds::task>::get_instance()->push_task(t);
        //查看是不是同一个实体,也就是说是不是符合单例的规则
        std::cout << qds::thread_pool<qds::task>::get_instance() << std::endl;
    }
    return 0;
}
